<?php
namespace app\index\controller;
use think\Config;
use think\Request;

class Seven extends Base
{
    //php5类型声明class/array  php7类型声明class/self/array/callable/bool/float/int/string
    //php7返回值类型声明
    //null合并运算符（三元运算）
    //组合比较符 <==> 大于1 等于0 小于-1
    //define定义常量数组，之前是const定义值
    //可以实例化匿名类，可以起到用后即焚的作用
    //命名空间可以通过单个use语句引入同一命名空间下的很多类
    //有了可以用于整除的函数intdiv
    //random_bytes()随机字符串  random_int()随机整数
    public function SevenZero()
    {
        var_dump(bin2hex(random_bytes(20)));
        var_dump(random_int(1000,2000));
    }
    //声明类型允许为空（前面加个问号）
    //void函数（用于不用写return，不过没啥卵用）
    //可以设置类常量的可见性（public, private, protected）
    //catch可以进行多异常捕获处理
    //支持为负的字符串偏移量$string[-1]
    //list()支持健名
    //openssl_encrypt()和openssl_decrypt()支持AEAD
    //pcntl_async_signals()用于启用无需ticks（这会带来很多额外的开销）的异步信号处理。
    //对http2服务器推送的支持现在已经被加入到 CURL 扩展
    public function SevenOne(int $int = 10)
    {
        openssl_encrypt();
        openssl_decrypt();
        return $int;
    }
    //新的对象类型object
    //允许重写抽象方法
    //通过名称加载扩展
    //添加了地址信息socket_addrinfo_lookup()，socket_addrinfo_connect()，socket_addrinfo_bind()，socket_addrinfo_explain()
    //命名分组命名空间支持尾部逗号
    //__autoload  each都舍弃了
    public function SevenTwo(){

    }
    //array_key_first() 和 array_key_last()
    //fpm_get_status()方法, 来获取FPM状态数组,
    //添加了几个FPM的配置项, 用来控制日志单行最大字符数, 日志缓冲等: log_limit, log_buffering, decorate_workers_output
    //curl添加了一堆常量
    //json_decode添加了一个常量, JSON_THROW_ON_ERROR, 如果解析失败可以抛出异常
    //spl autoloader: 如果一个加载失败, 剩下的都不再执行
    //循环+switch-case 语句的case 中使用continue 会报warning
    //静态变量在被继承时, 如果在子类里发生了循环引用, 父类里的静态变量会跟着变
    public function SevenThree(array $arr = [])
    {
        $v = [10, 20];
        list($c, &$d) = $v;
        $d += 10;
        var_dump($v, $c, $d);
    }
}